package com.tm.d1_algorith.d2_regex;

/**
 * 2024/5/30 Cjj 16:21 循环数组 找出指定的数组下标
 */
public class Test3 {
    public static void main(String[] args) {
        int[] arr = {10,20,30,40,50,60,70};
        System.out.println(search(arr, 60));
    }
    
    public static int search( int[] arr,int data){
        //1.定义一个变量,一个在左边，一个在右边
        int left=0;
        int right=arr.length-1;
        
        //2.定义一个循环判断条件
        while (left<=right){
          //3.每次折半都算出中间位置的索引
            int middle = (left + right) / 2;
          //4.判断当前要找的元素值,与中间位置处的元素值的大小情况
          if(data <arr[middle]){
              //往左边找,截止位置(右边位置)=中间位置-1
              right=middle-1;
          }else if (data>arr[middle]){
              //往右边找,截止位置(左边位置)=中间位置+1
              left=middle+1;
          }else {
              //否则就等于中间位置
              return middle;
          }
        }
        return -1;
        }

}